/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Logica;

import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author Javier Arzarello
 */
public class ssHipodromo {

    //ATRIBUTOS
    public ArrayList<Caballo> caballos = new ArrayList();
    private ArrayList<Hipodromo> hipodromos = new ArrayList();

    //CABALLOS
    public boolean agregarCaballo(Caballo c) {
        boolean r = false;
        if (c.validar() && !caballos.contains(c)) {
            caballos.add(c);
            r = true;
        }
        return r;
    }

    public boolean agregarHipodromo(Hipodromo h) {
        boolean r = false;
        if (h.validar() && !hipodromos.contains(h)) {
            hipodromos.add(h);
            r = true;
        }
        return r;
    }

    public ArrayList<Hipodromo> getHipodromos() {
        return hipodromos;
    }

    //Métodos de búsqueda
    public Hipodromo cargarHipodromo(String nombre) {
        for (Hipodromo h : hipodromos) {
            if (h.getNombre().equals(nombre)) {
                return h;
            }
        }
        return null;
    }
    
    public Caballo cargarCaballo(String nombre) {
        for(Caballo c:caballos){
            if(c.getNombre().equals(nombre)){
                return c;
            }
        }
        return null;
    }

    public ArrayList<Caballo> getCaballos() {
        return caballos;
    }
    
    public boolean buscarCaballosenJornadas(Date fecha, Caballo c){
        for(Hipodromo h:hipodromos){
            if(h.buscarCaballoenJornada(fecha, c)){
                return true;
            }
        }
        return false;
    }
    
    //ACCIONES SOBRE CARRERAS
    public void agregarCaballoCarrera(Carrera c, Participante p){
        c.agregarParticpante(p);
        Fachada.getInstancia().notificar(Fachada.Evento.CABALLO_CARRERA);
    }
    
    public void abrirCarrera(Carrera c){
        c.AbrirCarrera();
        Fachada.getInstancia().notificar(Fachada.Evento.CA_ABIERTA);
    }
    
    public void cerrarCarrera(Carrera c){
        c.cerrarCarrera();
        Fachada.getInstancia().notificar(Fachada.Evento.CA_CERRADA);
    }
    
    public void eliminarParticipante(Carrera c, Participante p){
        c.eliminarParticipante(p);
    }
    
}
